package la.iok.hzsvn.lewin.movie.shopmovie.model;

import java.util.List;
import java.util.Objects;

public class JoinPlayerParam {
    public static final Integer TYPE_VIRTUAL = 1;
    private List<Long> userIds;
    /**
     * 玩家类型。0：正常玩家，1：虚拟玩家/线下玩家
     */
    private Integer type;
    /**
     * 是否确认添加。1：确认添加，此时用户在其他拼车也添加。0或者无值：如果用户在其他拼车则不添加，需要前端给操作者提示后让用户选择是否确认添加
     */
    private Integer confirm;

    public List<Long> getUserIds() {
        return userIds;
    }

    public void setUserIds(List<Long> userIds) {
        this.userIds = userIds;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public Integer getConfirm() {
        return confirm;
    }

    public void setConfirm(Integer confirm) {
        this.confirm = confirm;
    }

    /**
     * 是否确认在其他拼车也添加。如果是确认添加则添加用户到拼车，否则需要提示操作者
     * @return 确认添加其他拼车中的用户则返回true,否则false
     */
    public boolean confirmJoin(){
        return confirm != null && confirm == 1;
    }

    /**
     * 是否虚拟玩家类型
     * @return 是虚拟玩家返回true,否则false
     */
    public boolean virtualPlayer(){
        return TYPE_VIRTUAL.equals(type);
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        JoinPlayerParam param = (JoinPlayerParam) o;
        return Objects.equals(userIds, param.userIds) && Objects.equals(confirm, param.confirm);
    }

    @Override
    public int hashCode() {
        return Objects.hash(userIds, confirm);
    }
}
